アクティブ・マスター・データ・ストアの障害からのリカバリ
この項の内容は次のとおりです。
スタンバイ・マスター・データ・ストアが使用可能な場合のリカバリ
この項では、スタンバイ・マスター・データ・ストアが使用可能で、アクティブ・マスター・データ・ストアと同期されている場合にアクティブ・マスター・データ・ストアをリカバリする方法について説明します。内容は次のとおりです。
レプリケーションがRETURN RECEIPTまたは非同期の場合
次のタスクを実行します。
- スタンバイ・マスター・データ・ストアで、ttRepStateSet('ACTIVE')を実行します。これによって、データ・ストアのロールがSTANDBYからACTIVEに変更されます。
- 新しいアクティブ・マスター・データ・ストアで、ttRepStateSave('FAILED', 'failed_store', 'host_name')を実行します。ここで、failed_storeは、障害が発生した前のアクティブ・マスター・データ・ストアです。この手順は、新しいアクティブ・マスター・データ・ストアがサブスクライバ・データ・ストアに直接レプリケートされるようにするために必要です。
- 障害が発生したデータ・ストアで、アプリケーション・エージェントがまだ停止されていない場合は停止します。
- 障害が発生したデータ・ストアを破棄します。
- 新しいアクティブ・マスター・データ・ストアを新しいスタンバイ・マスター・データ・ストアに複製します。データ・ストアを複製するには、ttRepAdmin -duplicateユーティリティまたはttRepDuplicateEx C関数のいずれかを使用できます。
スタンバイ・マスター・データ・ストアは、アクティブ・マスター・データ・ストアに通信します。アクティブ・マスター・データ・ストアは、サブスクライバへの更新の送信を停止します。スタンバイ・マスター・データ・ストアがアクティブ・マスター・データ・ストアと完全に同期している場合、スタンバイ・マスター・データ・ストアはSTANDBY状態になり、サブスクライバへの更新の送信を開始します。
注意: スタンバイ・マスター・データ・ストアがSTANDBY状態になったことは、ttRepStateGetプロシージャを使用して確認できます。
レプリケーションがRETURN TWOSAFEの場合
次のタスクを実行します。
- スタンバイ・マスター・データ・ストアで、ttRepStateSet('ACTIVE')を実行します。これによって、データ・ストアのロールがSTANDBYからACTIVEに変更されます。
- 新しいアクティブ・マスター・データ・ストアで、ttRepStateSave('FAILED', 'failed_store', 'host_name')を実行します。ここで、failed_storeは、障害が発生した前のアクティブ・マスター・データ・ストアです。この手順は、新しいアクティブ・マスター・データ・ストアがサブスクライバ・データ・ストアに直接レプリケートされるようにするために必要です。
- 新しいアクティブ・マスター・データ・ストアでレプリケーション・エージェントを起動します。
- 障害が発生したデータ・ストアに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。
スタンバイ・マスター・データ・ストアと完全に同期されているとアクティブ・マスター・データ・ストアで判断された場合、スタンバイ・マスター・データ・ストアはSTANDBY状態になり、サブスクライバへの更新の送信を開始します。
注意: スタンバイ・マスター・データ・ストアがSTANDBY状態になったことは、ttRepStateGetプロシージャを使用して確認できます。
スタンバイ・マスター・データ・ストアが使用可能でない場合のリカバリ
次の例を考えてみます。
- スタンバイ・マスター・データ・ストアで障害が発生しました。スタンバイが再起動する前、またはスタンバイがアクティブ・マスター・データ・ストアと同期される前に、アクティブ・マスター・データ・ストアで障害が発生しました。
- アクティブ・マスター・データ・ストアで障害が発生しました。スタンバイ・マスター・データ・ストアがACTIVEになり、リカバリ・プロセスの残りが開始されます(「アクティブ・マスター・データ・ストアの障害からのリカバリ」を参照)。新しいスタンバイ・マスター・データ・ストアが新しいアクティブ・マスター・データ・ストアと完全に同期される前に、そのアクティブ・マスター・データ・ストアで障害が発生しました。
両方の例で、スタンバイ・マスター・データ・ストアの場合より多くの変更がサブスクライバに適用されている可能性があります。
アクティブ・マスター・データ・ストアで障害が発生し、アクティブ・マスター・データ・ストアから最後に送信された変更の一部のみがスタンバイ・マスター・データ・ストアで適用された場合、リカバリの方法として次の2つの方法があります。
- ローカル・トランザクション・ログからアクティブ・マスター・データ・ストアをリカバリする方法
- ローカル・トランザクション・ログからスタンバイ・マスター・データ・ストアをリカバリする方法
いずれのデータ・ストアが使用可能かまたはいずれのデータ・ストアがより新しいかに応じて、使用する方法を選択します。
アクティブ・マスター・データ・ストアのリカバリ
- 障害が発生したアクティブ・データ・ストアに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。
- 新しくリカバリされたストアで、ttRepStateSet('ACTIVE')を実行します。
スタンバイ・マスター・データ・ストアのリカバリ
- 障害が発生したスタンバイ・データ・ストアに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。
- DROP ACTIVE STANDBY PAIRおよびCREATE ACTIVE STANDBY PAIR文を使用して、レプリケーション設定を削除および再作成します。
- マスター・データ・ストアで、ttRepStateSet('ACTIVE')を実行して、それにACTIVEロールを付与します。
元のノードへのフェイルバック
フェイルオーバーに成功した後、アクティブ・マスター・データ・ストアおよびスタンバイ・マスター・データ・ストアが元のノードに存在するようにフェイルバックする必要がある場合があります。詳細は、「アクティブ・マスター・データ・ストアとスタンバイ・マスター・データ・ストアの役割の入替え」を参照してください。